package com.bcmusic.music.service;

import com.bcmusic.music.domain.music.dto.UploadMusicDTO;
import com.bcmusic.music.domain.music.vo.CertificateVO;
import com.bcmusic.music.domain.music.vo.DownLoadMusicVO;
import com.bcmusic.music.pojo.Music;
import com.github.pagehelper.PageInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/****
 * @Author:admin
 * @Description:Music业务层接口
 * @Date 2019/6/14 0:16
 *****/
public interface MusicService {

    /***
     * Music多条件分页查询
     * @param userNum
     * @param page
     * @param size
     * @return
     */
    PageInfo findPage(int page, int size,String userNum);

    /***
     * Music分页查询
     * @param page
     * @param size
     * @return
     */
    PageInfo findPage(int page, int size);

    /***
     * Music多条件搜索方法
     * @param music
     * @return
     */
    List<Music> findList(Music music);

    /***
     * 删除Music
     * @param id
     */
    void delete(Integer id);

    /***
     * 修改Music数据
     * @param music
     */
    void update(Music music);

    /***
     * 新增Music
     * @param music
     */
    void add(Music music);

    /**
     * 根据ID查询Music
     * @param id
     * @return
     */
     Music findById(Integer id);

    /***
     * 查询所有Music
     * @return
     */
    List<Music> findAll();

    /**
     * 上传音乐
     * @param music
     * @param userNum
     * @return
     */
    int uploadMusic(UploadMusicDTO music,String userNum);

    /**
     * 撤销音乐
     * @param musicId
     * @param userNum
     * @return
     */
    int backOutMusic(Integer musicId,String userNum);

    /**
     * 查看证书
     * @param musicId
     * @param userNum
     * @return
     */
    CertificateVO getCertificateVO(Integer musicId,String userNum);

    /**
     * 下载音乐，目前只有版权方可以下载
     * @param musicId
     * @param userNum
     * @return
     */
    DownLoadMusicVO downLoadMusic(Integer musicId, String userNum);

    /**
     * 后台调用获取音乐信息
     * @param musicIdList
     * @return
     */
    List<CertificateVO> getMusicInfo(List<Integer>musicIdList);

    /**
     * 根据音乐id查询音乐
     * @param idList
     * @return
     */
    List<Music>getMusicByIdList(List<Integer>idList);

    /**
     * 上传文件
     * @param file
     * @return
     */
    String uploadFile(MultipartFile file);
}
